/******************************************************************************
 *
 * @file       cardpanel.h
 * @brief      卡牌类：单张卡牌窗口
 *
 * @author     ax
 * @date       2024/05/22
 * @history
 *****************************************************************************/


#ifndef CARDPANEL_H
#define CARDPANEL_H

#include <QWidget>
#include "card.h"
#include "player.h"

class CardPanel : public QWidget
{
    Q_OBJECT
public:
    explicit CardPanel(QWidget *parent = nullptr);

    void setImage(const QPixmap &front, const QPixmap &back);
    QPixmap getImage(); // 获取前置图片（后置图片是相同的）

    void setFrontSide(bool flag);
    bool isFrontSide();

    void setSeclected(bool flag);
    bool isSelected();

    void setCard(const Card& card);
    Card getCard();

    void setOwner(Player* player);
    Player* getOwner();

    void clicked();

protected:
    void paintEvent(QPaintEvent *event); //
    void mousePressEvent(QMouseEvent* event);

signals:
    void cardSelected(Qt::MouseButton button);

private:
    // 一个卡牌有什么？怎么表示？
    // ===> 前 / 后置图片(QPixmap)，是正面还是背面(bool)，是否被选择(bool)，卡牌的点数和花色(Card)，这个卡牌是谁的(Player)
    QPixmap m_front;           // 前置图
    QPixmap m_back;            // 后置图
    bool m_isfront = true;     // 是否是前置图
    bool m_isSelect = false;   // 是否被选择
    Card m_card;               // card
    Player* m_owner = nullptr; // 拥有当前 cardpanel 的玩家
};

#endif // CARDPANEL_H
